﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//简写单词
//#include<ctype.h>
//int main()
//{
//    char str[100] = { 0 };
//    while (scanf("%s", str) != EOF)
//    {
//        if (islower(*str))
//        {
//            printf("%c", toupper(*str));
//        }
//        else
//            printf("%c", *str);
//    }
//    return 0;
//}

//小乐乐计算函数
//int max3(int a, int b, int c)
//{
//	int max = a;
//	if (b > max)
//		max = b;
//	if (c > max)
//		max = c;
//	return max;
//}
//int main()
//{
//	int a = 0, b = 0, c = 0;
//	scanf("%d %d %d", &a, &b, &c);
//	int x = max3(a + b, b, c);
//	int y = max3(a, b + c, c);
//	int z = max3(a, b, b + c);
//	float calloc = (float)x / (y+z);
//	printf("%.2f", calloc);
//	return 0;
//}
//数字五五
//int fun(int a, int b)
//{
//	int count = 0;
//	for (int i = a; i <= b; i++)
//	{
//		int tmp = i;
//		int sum = 0;
//		while (tmp)
//		{
//			sum += (tmp % 10);
//			tmp /= 10;
//		}
//		if (sum % 5 == 0)
//		{
//			count++;
//		}
//	}
//	return count;
//}
//int main()
//{
//	int a = 0, b = 0;
//	scanf("%d %d", &a, &b);
//	int ret=fun(a, b);
//	printf("%d\n", ret);
//	return 0;
//}

//int calloc(int n)
//{
//	int count = 0;
//	int tmp = n;
//	//计算项数
//	while (tmp)
//	{
//		count++;
//		tmp /= 10;
//	}
//	while (count--)
//	{
//		int sum = 0;
		/*while (n)
		{
			sum += n % 10;
			n /= 10;
		}*/
//		n = sum;
//	}
//	return n;
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = calloc(n);
//	printf("%d\n", ret);
//	return 0;
//}

//数字统计
//int fun(int a, int b)
//{
//	int count = 0;
//	for (int i = a; i <= b; i++)
//	{
//		int tmp = i;
//		while (tmp)
//		{
//			if (tmp % 10 == 2)
//			{
//				count++;
//			}
//			tmp /= 10;
//		}
//	}
//	return count;
//}
//int main()
//{
//	int a = 0, b = 0;
//	scanf("%d %d", &a, &b);
//	int ret = fun(a, b);
//	printf("%d\n", ret);
//	return 0;
//}
//#include<stdlib.h>
//double fun(int n, int* arr)
//{
//	double money = 0.0;
//	for (int i = 0; i < n; i++)
//	{
//		if (*(arr + i) <= 60)
//		{
//			money += 0.1;
//		}
//		else
//		{
//			money += 0.2;
//		}
//	}
//	return money;
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int* arr = (int*)malloc(n * sizeof(int));
//	if (arr == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%d", arr + i);
//	}
//	double ret = fun(n, arr);
//	printf("%.1f\n", ret);
//	return 0;
//}

//#include<math.h>
//int fun(int a, int b)
//{
//	int count = 0;
//	for (int i = a; i <= b; i++)
//	{
//		int flag = 1;
//		for (int j = 2; j <= sqrt(i); j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (flag == 1)
//		{
//			count+=i;
//		}
//	}
//	return count;
//}
//int main()
//{
//	int a = 0, b = 0;
//	scanf("%d %d", &a, &b);
//	int ret=fun(a, b);
//	printf("%d\n", ret);
//	return 0;
//}

//#define MAX 100
//#define reg register   //为register这个关键词，创建一个简短的名字
//#define do_forever for(;;)
//#define CASE break;case

//#define MAX 100
//int main()
//{
//	int a = 5 + MAX;
//	//在预处理阶段进行处理，下面遇到define定义的内容，会被全部替换，同时删除define
//	printf("%d\n", a);
//	return 0;
//}

//#define do_forever for(;;)
////对于for循环，判段部分什么都不写的时候，表示恒为真
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	switch (num)
//	{
//	case 1:
//		break;
//	case 2:
//		break;
//	case 3:
//		break;
//	default:
//		break;
//	}
//	return 0;
//}

//#define CASE break;case
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	switch (num)
//	{
//	case 1:
//	CASE 2:
//	CASE 3:
//		break;
//	default:
//		break;
//	}
//	return 0;
//}

//// 如果定义的stuff过⻓，可以分成⼏⾏写，除了最后⼀⾏外，
//// 每⾏的后⾯都加⼀个反斜杠\(续行符)
//#define DEBUG_PRINT printf("file:%s\tline:%d\t \
// date:%s\ttime:%s\n" ,\
// __FILE__,__LINE__ ，\
//	__DATE__, __TIME__)

//#define ADD(x) ((x)*(x))
//int main()
//{
//	int a = 5;
//	printf("%d\n", 10*SQUARE(a));
//	return 0;
//}
//
//printf("%d\n",10*(5)+(5))

//#define MAX(a,b) ((a>b)?(a):(b))
//int main()
//{
//	int a = 3;
//	int b = 4;
//	int max = MAX(a++, b++);
//	printf("%d\n", max);
//	printf("%d %d\n", a, b);
//	return 0;
//}

//#define MALLOC(num,type) (type*)malloc(num*sizeof(type))
//int main()
//{
//	int* p = MALLOC(10, int);
//	char* p1 = MALLOC(10, char);
//	float* p2 = MALLOC(10, float);
//	//预处理替换后
//	//int* p = (int*)malloc(10 * sizeof(int));
//	//char* p = (char*)malloc(10 * sizeof(char));
//	//float* p = (float*)malloc(10 * sizeof(float));
//	return 0;
//}

//#define PRINT(n,format)\
//printf("the value of "#n" is " format"\n",n)
//int main()
//{
//	int a = 10;
//	PRINT(a,"%d");
//	//预处理器处理后:
//	//printf("the value of a is %d\n", a);
//	return 0;
//}

//int int_max(int x, int y)
//{
//	return x > y ? x : y;
//}
//float float_max(float x, float y)
//{
//	return x > y ? x : y;
//}
//#define compare_max(type,x,y)\
//type##_max(type x,type y)\
//{\
//	return x > y ? x : y;\
//}

//#include<stdio.h>
//#define __DEBUG__
//int main()
//{
//	int i = 0;
//	int arr[10] = { 0 };
//	for (int i = 0; i < 10; i++)
//	{
//		arr[i] = i;
//#ifdef __DEBUG__
//		printf("%d\n", arr[i]);//观察数组是否赋值成功
//#endif // DEBUG
//
//	}
//	return 0;
//}

//#if 常量表达式
//	//……
//#endif
////常量表达式由预处理器求值
////如：
//#define __DUBUG__ 1
//#if __DEBUG__
//	//......
//#endif

//#define m 100
//#include<stdio.h>
//int main()
//{
//	int a = 10;
////错误写法，在预处理阶段，int a=10;此代码还没有
//#if a==10
//	printf("%d\n", a);
//#endif
//	return 0;
//}

//#if 常量表达式
//	//......
//#elif 常量表达式
//	//......
//#else
//	//......
//#endif
//#define M 100
// int main()
// {
// #if M == 0
//     printf("hehe\n");
// #elif M == 10
//     printf("haha\n");
// #elif M == 100
//     printf("呵呵\n");
// #else
//     printf("哈哈\n");
// #endif
//
// 	return 0;
// }

//#define M 0
//int main()
//{
//#if !defined(M)
//	printf("hehe\n");
//#endif
//	return 0;
//}
//
//int main()
//{
//#ifndef M
//	printf("hehe\n");
//#endif
//	return 0;
//}
//#include <stddef.h> 
//#define OFFSETOF(type,member) ((size_t)&(((type*)0)->member))
//struct s
//{
//	char name[20];
//	int age;
//};
//int main()
//{
//	int ret = OFFSETOF(struct s, age);
//	printf("%d\n", ret);
//	return 0;
//}

////打印奇偶位
//void fun(int n)
//{
//	//打印奇数位
//	printf("奇数位:");
//	for (int i = 31; i >= 1; i -= 2)
//	{
//		printf("%d", (n >> i) & 1);
//	}
//	printf("\n");
//	//打印偶数位
//	printf("偶数位:");
//	for (int i = 30; i >= 0; i -= 2)
//	{
//		printf("%d", (n >> i) & 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	fun(n);
//	return 0;
//}

////交换奇偶位
//void swap(int n)
//{
//	int tmp1 = n & 0x55555555;
//	int tmp2 = n & 0xaaaaaaaa;
//	tmp1 = tmp1 << 1;
//	tmp2 = tmp2 >> 1;
//	n = tmp1 | tmp2;
//	printf("%d\n", n);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	swap(n);
//	return 0;
//}

//#define swap(n) ((((n)&0x55555555)<<1)|(((n)&0xaaaaaaaa)>>1))
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	n = swap(n);
//	printf("%d\n", n);
//	return 0;
//}

//#include<math.h>
////素数回文
////生成回文数
//void Hwen(long long int n)
//{
//	long long int count = 0;
//	long long int tmp = n;
//	while (tmp)
//	{
//		tmp /= 10;
//		count++;
//	}
//	tmp = n;
//	while (count > 1)
//	{
//		tmp = tmp * 10 + n / 10 % 10;
//		n /= 10;
//		count--;
//	}
//	n = tmp;
//	int flag = 1;
//	for (long long int i = 2; i <= sqrt(n); i++)
//	{
//		if (n % i == 0)
//		{
//			flag = 0;
//			break;
//		}
//	}
//	if (flag == 1)
//	{
//		printf("prime\n");
//	}
//	else
//		printf("noprime\n");
//}
//int main()
//{
//	long long int n = 0;
//	scanf("%lld", &n);
//	Hwen(n);
//	return 0;
//}